package messages;

import Model.FileId;
import Model.Exceptions.FileIdException;
import java.net.UnknownHostException;
/**
 * La classe FileResponse correspond au signal à envoyer pour repondre à une
 * demande de transfert de fichier d'un utilisateur distant.
 * 
 * @author      Frank Djomo
 * @author      Christelle SIAGO HAPPI
 * @author      djomopoueme@gmail.com
 * @author      christelle.siagohappi@gmail.com
 * @version     1.0
 */
public class FileResponse extends Message {
        /**
	 * 
	 */
	private static final long serialVersionUID = 9145184158735519346L;
	private boolean m_Accept;
	private int m_PortReception;
	private FileId m_FileId;
        /**
        * Constructeur
        * @param  login     Login de l'utilisateur local
        * @param  accept    Reponse à la demande de transfert
        *                   <code>true</code> si accepté 
        *                   <code>false</code> sinon 
        * @param  portReception   Port de reception pour le transfert de fichier
        * @param  fileid          Identifiant du fichier accepté
        * @throws UnknownHostException   
        */
	public FileResponse(String login,boolean accept, int portReception, FileId fileid) throws UnknownHostException {
            super(login);
            this.m_Accept = accept;
            this.m_PortReception = portReception;
            this.m_FileId = fileid;
	}
        /**
        * Constructeur
        * @param  login     Login de l'utilisateur local
        * @param  accept    Reponse à la demande de transfert
        *                   <code>true</code> si accepté 
        *                   <code>false</code> sinon 
        * @param  portReception   Port de reception pour le transfert de fichier
        * @param  fileid          Identifiant du fichier accepté
        * @throws UnknownHostException  
        * @throws FileIdException
        */
        public FileResponse(String login,boolean accept, int portReception, int fileid) throws UnknownHostException, FileIdException {
            super(login);
            this.m_Accept = accept;
            this.m_PortReception = portReception;
            this.m_FileId = new FileId(fileid);
	}
        /**
        * @return Reponse à la demande de transfert
        */
	public boolean haveAccept() {
            return this.m_Accept;
	}
        /**
        * @return Port de reception pour le tranfert de fichier
        */
	public int getPortReception() {
            return this.m_PortReception;
	}
        /**
        * @return FileId du fichier accepté
        */
	public FileId getFileId() {
            return this.m_FileId;
	}	
        @Override
        public String toString() {
            return super.toString() + "Accept : " + this.haveAccept() + "; PortReception : " + this.getPortReception() + "; FileId : " + this.getFileId();
        }
}
